﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ChampionFramework.Models;

namespace ChampionFramework.Controllers
{
	public class GolController : BaseEventoController<Gol>
	{
		private ChampionContextContainer db = new ChampionContextContainer();

		//
		// GET: /Gol/

		public ActionResult Index()
		{
			var eventoset = db.EventoSet.Include("Jogador");
			return View(eventoset.OfType<Gol>().ToList());
		}

		//
		// GET: /Gol/Details/5

		public ActionResult Details(int id = 0)
		{
			Gol gol = (Gol)db.EventoSet.Single(g => g.Id == id);
			if (gol == null)
			{
				return HttpNotFound();
			}
			return View(gol);
		}

		//
		// GET: /Gol/Create
        /*
		public ActionResult Create(int jogoGrupoId)
		{
            this.List(jogoGrupoId);
			return View();
		}

        public void List(int jogoGrupoId)
        {
            JogoGrupo jogo = db.JogoSet.OfType<JogoGrupo>().Single(j => j.Id == jogoGrupoId);
            var list = jogo.GetEscalacaoMandante().JogadorTitular.Union(
                jogo.GetEscalacaoVisitante().JogadorTitular.Union(
                    jogo.GetEscalacaoMandante().JogadorReserva.Union(
                        jogo.GetEscalacaoVisitante().JogadorReserva)));
            ViewBag.JogadorId = new SelectList(list, "Id", "Nome");
            this.Session["JogoGrupoId"] = jogo.Id;
        }
        */
		//
		// POST: /Gol/Create
        /*
		[HttpPost]
		public ActionResult Create(Gol gol)
		{
            int jogoGrupoId = Convert.ToInt32(this.Session["JogoGrupoId"]);
            JogoGrupo jogo = db.JogoSet.OfType<JogoGrupo>().Single(j => j.Id == jogoGrupoId);
            jogo.GetEtapaAtual().Evento.Add(gol);
            gol.Etapa = jogo.GetEtapaAtual();
			if (ModelState.IsValid)
			{
				db.EventoSet.AddObject(gol);
				db.SaveChanges();
                this.Session["JogoGrupoId"] = "";
                return RedirectToAction("TempoReal", "JogoGrupo", new { id = jogoGrupoId });
			}
            this.List(jogoGrupoId);
			return View(gol);
		}
        */
		//
		// GET: /Gol/Edit/5

		public ActionResult Edit(int id = 0)
		{
			Gol gol = (Gol)db.EventoSet.Single(g => g.Id == id);
			if (gol == null)
			{
				return HttpNotFound();
			}
			ViewBag.JogadorId = new SelectList(db.JogadorSet, "Id", "Nome", gol.JogadorId);
			return View(gol);
		}

		//
		// POST: /Gol/Edit/5

		[HttpPost]
		public ActionResult Edit(Gol gol)
		{
			if (ModelState.IsValid)
			{
				db.EventoSet.Attach(gol);
				db.ObjectStateManager.ChangeObjectState(gol, EntityState.Modified);
				db.SaveChanges();
				return RedirectToAction("Index");
			}
			ViewBag.JogadorId = new SelectList(db.JogadorSet, "Id", "Nome", gol.JogadorId);
			return View(gol);
		}

		//
		// GET: /Gol/Delete/5

		public ActionResult Delete(int id = 0)
		{
			Gol gol = (Gol)db.EventoSet.Single(g => g.Id == id);
			if (gol == null)
			{
				return HttpNotFound();
			}
			return View(gol);
		}

		//
		// POST: /Gol/Delete/5

		[HttpPost, ActionName("Delete")]
		public ActionResult DeleteConfirmed(int id)
		{
			Gol gol = (Gol)db.EventoSet.Single(g => g.Id == id);
			db.EventoSet.DeleteObject(gol);
			db.SaveChanges();
			return RedirectToAction("Index");
		}

		protected override void Dispose(bool disposing)
		{
			db.Dispose();
			base.Dispose(disposing);
		}
	}
}